Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

314
Visualizações
¿Por qué router.push no funciona? [Vue3] [Vuex4]

Tengo algunos problemas con Vue 3 y Vuex. Estoy tratando de redirigir a los usuarios cuando inician sesión en mi archivo Vuex, pero no funciona como se esperaba. No devuelve ningún error, cambia un enlace, pero no lo redirige a otra página.

Mi acción se ve así;

 actions: { async login(commit: any, payload: any ) { const cookie_token = useCookies(); API.post('/login', { email: payload.email.value, password: payload.password.value }) .then((response: any) => { notif.success('Welcome back, ' + response.data.player.name) cookie.set('user', response.data) commit.commit('loginSuccess', response.data) router.push({ name: 'index', }) }).catch((e) => ( console.log(e.message) ) ) } },

Y el enrutador obtiene archivos donde se definen las rutas.

Y aquí está mi archivo de enrutador completo:

 import { createRouter as createClientRouter, createWebHistory, } from 'vue-router' import * as NProgress from 'nprogress' // import routes from 'pages-generated' import type { RouteRecordRaw } from "vue-router"; // Then we can define our routes const routes: RouteRecordRaw[] = [ // This is a simple route { component: () => import("/@src/pages/index.vue"), name: "index", path: "/", props: true, }, { component: () => import("/@src/pages/auth.vue"), path: "/auth", props: true, children: [ { component: () => import("/@src/pages/auth/login.vue"), name: "auth-login", path: "login-1", props: true, }, { component: () => import("/@src/pages/auth/login.vue"), name: "auth-signup", path: "singup", props: true, }, ], }, { component: () => import("/@src/pages/[...all].vue"), name: "404", path: "/:all(.*)", props: true, }, ]; export function createRouter() { const router = createClientRouter({ history: createWebHistory(), routes, }) /** * Handle NProgress display on-page changes */ router.beforeEach(() => { NProgress.start() }) router.afterEach(() => { NProgress.done() }) return router } export default createRouter()

Tenga en cuenta que está funcionando en otros archivos, y puedo ver que el enrutador se activa aquí, pero no cambia una página, solo en vuex no funciona. Si no funciona, ¿por qué no hay error?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está creando más de una instancia de Vue Router. Debe exportar la misma instancia de router , no una función que crea una nueva instancia cada vez que se llama.

El siguiente código probablemente producirá el resultado deseado:

 import { createRouter, createWebHistory, } from 'vue-router' import * as NProgress from 'nprogress' import type { RouteRecordRaw } from "vue-router"; const routes: RouteRecordRaw[] = [ // your routes here... ]; let router; export function useRouter() { if (!router) { router = createRouter({ history: createWebHistory(), routes, }) router.beforeEach(() => { NProgress.start() }) router.afterEach(() => { NProgress.done() }) } return router }

Estoy colocando la instancia del router en el ámbito externo, por lo que siempre obtienes la misma instancia cuando llamas a useRouter() .
Consúmelo usando:

 import { useRouter } from '../path/to/router' const router = useRouter();
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda